package com.itheima.sort;

public class Bubble_sort {

        /**
         * 冒泡排序算法实现
         * @param arr 待排序的整数数组
         */
        public static void BubbleSort(int[] arr) {
            int n = arr.length;

            // 外层循环控制排序轮数
            for (int i = 0; i < n - 1; i++) {
                // 设置标志位，用于优化算法
                boolean swapped = false;

                // 内层循环进行相邻元素比较和交换
                for (int j = 0; j < n - 1 - i; j++) {
                    // 如果前一个元素大于后一个元素，则交换它们
                    if (arr[j] > arr[j + 1]) {
                        // 交换元素
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                        swapped = true;
                    }
                }

                // 如果在某一轮中没有发生交换，说明数组已经有序，可以提前结束
                if (!swapped) {
                    break;
                }
            }
        }

        /**
         * 打印数组元素
         * @param arr 要打印的数组
         */
        public static void printArray(int[] arr) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }

        /**
         * 主方法，用于测试冒泡排序算法
         */
        public static void main(String[] args) {
            int[] arr = {64, 34, 25, 12, 22, 11, 90};

            System.out.println("排序前的数组:");
            printArray(arr);

            BubbleSort(arr);

            System.out.println("排序后的数组:");
            printArray(arr);
        }
    }

